<?php
class security extends core {

	public function security($args){
		$this->config = $args;
	}
	// Функция определения способа авторизации пользователя: сессия, html
    public function user($qclass = ''){
		global $db;
		if ( $this->config['atype'] == 'thw' ) {
			if ( isset ( $_SERVER['REMOTE_USER'] ) ) {
				$this->user['login'] = $_SERVER['REMOTE_USER'];
				return $this->user;
			} else {
				die($this->mui['auth_config_error']);	
			}
		} elseif ( $this->config['atype'] == 'http' ) {
			// Запрос на сопоставление имени и пароля
			if ( !isset ( $_SERVER['PHP_AUTH_USER'] ) || !$this->check_login($_SERVER['PHP_AUTH_USER'],md5($_SERVER['PHP_AUTH_PW']))){
				header ( 'WWW-Authenticate: Basic realm="'.$this->config['project'].'"' );
				header ( 'HTTP/1.0 401 Unauthorized' );
				return false;
				//echo $this->mui['auth_error'];
				exit;
			} else {
				// Действия в случае удачного сопоставления
				$this->user['login'] = $_SERVER['PHP_AUTH_USER'];
				$this->fill_userinfo();
				$this->fill_avalible_methods($qclass);
				return $this->user;
			}
		} elseif ( $this->config['atype'] == 'forms' ) {
			$this->session;
		}
    }

    // Функция определения залогиненого пользователя с помощью сессии
    private function session($func = 'check'){
		global $db;
		if (isset($_REQUEST[session_name()])){
			session_start();
			return true;
		} else {
			$this->login();
        	return false;
		}
    }

    // Функция выдачи доступных методов для запрашиваемого класса
    private function fill_avalible_methods($qclass){
    	global $db;
    	//Выбор доступных методов по ID человека для определенного $qclass
    	$result = $db->sql_query();
    }
	
	// функция проверки пользователя
	private function check_login($user,$mdpass){
		global $db;
		$result = $db->sql_query("SELECT pid FROM `core_access_logins` WHERE LOWER(login)=LOWER('".$user."') AND pass='".$mdpass."' AND ban=0");
		if($db->sql_numrows($result) > 0){
			list($this->user['id']) = $db->sql_fetchrow($result);
			return true;
		}
		else return false;
	}
	
	// Функция заполнения данных о пользователе
	private function fill_userinfo(){
		global $db;
		$result = $db->sql_fetchrow($db->sql_query("SELECT * FROM ".$this->config['basetable']." WHERE id='".$this->user['id']."' AND act=1"));
		$this->user = array_merge($this->user,$result);
	}

    // Функция авторизации пользователя и создания сессии
    public function login(){
        
        return false;
    }
}
?>